package org.web.accesscontrollist.sdk.dto.menu;

import lombok.Getter;
import lombok.Setter;

import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;

@Getter
@Setter
public class MenuItem {
    /**
     * 菜单唯一标识 (对应 detail_name)
     */
    @NotEmpty
    private String index;

    /**
     * 菜单名称 (对应 detail_comment)
     */
    @NotEmpty
    private String label;

    /**
     * 菜单图标 (从 detail_extends_value 提取)
     */
    private String icon;

    /**
     * 菜单层级 (对应 resource_level)
     */
    @NotNull
    private Integer level;

    /**
     * 排序号 (对应 sort_num，不返回给前端但用于排序)
     */
    private String sortNum;

    /**
     * 子菜单（始终初始化为空列表）
     */
    private List<MenuItem> children = new ArrayList<>();

    /**
     * 添加子节点并自动排序
     */
    public void addChild(MenuItem child) {
        this.children.add(child);
        this.children.sort(Comparator.comparing(m -> m.getSortNum() == null ? "" : m.getSortNum()));
    }
}